package linkedlist;// 这里添加自定义注释，如作者、创建时间

import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;

/**
 * @Author：JIAMIN_TANG
 * @Description:
 * @CreateTime：2025/11/1 22:00
 */
public class Test {
    public static void main1(String[] args) {
        MyLinkedList myLinkedList = new MyLinkedList();
        myLinkedList.addFirst(1);
        myLinkedList.addFirst(2);
        myLinkedList.addFirst(3);
        myLinkedList.addFirst(4);
        myLinkedList.display();

        System.out.println(myLinkedList.size());
        System.out.println(myLinkedList.contains(3));
        myLinkedList.addLast(5);
        System.out.println(myLinkedList.size());
        myLinkedList.addIndex(3,99);
        myLinkedList.display();
    }

    //关于遍历链表元素的几种方法
    public static void main(String[] args){
        LinkedList<Integer> list = new LinkedList<>();
        list.addLast(1);
        list.addLast(2);
        list.addLast(3);
        System.out.println(list);

        System.out.println("========1=======");
        //使用传统的for循环进行遍历
        for(int i = 0;i < list.size();i++){
            System.out.println(list.get(i)+" ");
        }
        System.out.println();
        System.out.println("========2=======");
        //用for-each遍历
        //注意，for-each循环是只能有迭代器的引用类型使用的，不能是基本数据类型使用的，没有迭代器的引用类型也不可以用，
        // 而且不是所有的集合类都有迭代器，
        // 只有实现了Iterable接口的集合类才有迭代器，才能使用for-each循环，
        // 常见的有ArrayList，LinkedList，HashSet，TreeSet等
        for(int x : list){//这里其实是使用的Integer的，但是使用int也是可以的，因为Java会自动拆箱，把Integer转换成int
            System.out.println(x+" ");
        }

        //使用迭代器进行遍历
        System.out.println("========3========");
        Iterator<Integer> it = list.iterator();
        while(it.hasNext()){
            System.out.println(it.next()+" ");//这里的it.next()的意思是先把当前的节点打印出来，然后把指针往后移动一位
        }

        System.out.println();
        System.out.println("========4=======");

        ListIterator<Integer> lit = list.listIterator();
        while(lit.hasNext()){
            System.out.println(lit.next()+" ");//同it.next()
        }

        System.out.println();
        System.out.println("========5=======");

        //倒着打印，使用ListIterator，Iterator是没有倒着打印的方法的
        ListIterator<Integer> lit2 = list.listIterator(list.size());
        while(lit2.hasPrevious()){
            System.out.println(lit2.previous()+" ");
        }
        System.out.println();
    }
}
